﻿/******************************************************************* 
* Copyright (C)  版权所有
* 创建时间:2019/4/29 15:11:28
* 作    者: zhenhua.shen
* 邮    箱：1025556487@qq.com
* 描    述：类功能描述
* 修改记录:修改类的记录
* 修改人:修改此类的人名称
* 版 本 号:v1.0.0
**********************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using ECharts.Utility;
using Newtonsoft.Json;

namespace ECharts.Title
{
    [Serializable]
    [TypeConverter(typeof(ExpandableObjectConverter))]
    [JsonConverter(typeof(NoTypeConverter<Title>))]
    public class Title
    {
        private bool _show = true;
        /// <summary>
        /// 是否显示
        /// </summary>
        [Description("是否显示")]
        public bool Show
        {
            get
            {
                return _show;
            }
            set
            {
                _show = value;
            }
        }

       private int _zlevel = 0;
        /// <summary>
        /// 一级层叠控制。每一个不同的zlevel将产生一个独立的canvas，相同zlevel的组件或图标将在同一个canvas上渲染。zlevel越高越靠顶层，canvas对象增多会消耗更多的内存和性能，并不建议设置过多的zlevel，大部分情况可以通过二级层叠控制z实现层叠控制。
        /// </summary>
       [Description("一级层叠控制。每一个不同的zlevel将产生一个独立的canvas，相同zlevel的组件或图标将在同一个canvas上渲染。zlevel越高越靠顶层，canvas对象增多会消耗更多的内存和性能，并不建议设置过多的zlevel，大部分情况可以通过二级层叠控制z实现层叠控制。")]
       public int Zlevel 
       {
           get
           {
               return _zlevel;
           }
           set
           {
               _zlevel = value;
           }
       }


       private int _z = 0;
        /// <summary>
        /// 二级层叠控制，同一个canvas（相同zlevel）上z越高约靠顶层
        /// </summary>
       [Description("二级层叠控制，同一个canvas（相同zlevel）上z越高约靠顶层")]
       public int Z 
       {
           get 
           { 
               return _z; 
           }
           set
           {
               _z = value;
           }
       }


        /// <summary>
        /// 主标题文本，'\n'指定换行
        /// </summary>
       [Description("主标题文本，'\n'指定换行")]
       [NotifyParentProperty(true)]
       public string text { get; set; }

        /// <summary>
        /// 主标题文本超链接
        /// </summary>
       [Description("主标题文本超链接")]
       public string link { get; set; }

        /// <summary>
        /// 指定窗口打开主标题超链接，支持'self' | 'blank'，不指定等同为'blank'（新窗口）
        /// </summary>
       [Description("指定窗口打开主标题超链接，支持'self' | 'blank'，不指定等同为'blank'（新窗口）")]
       public string target { get; set; }

        /// <summary>
        /// 副标题文本，'\n'指定换行
        /// </summary>
       [Description("副标题文本，'\n'指定换行")]
       [NotifyParentProperty(true)]
       public string subtext { get; set; }

        /// <summary>
        /// 副标题文本超链接
        /// </summary>
       [Description("副标题文本超链接")]
       public string sublink { get; set; }

        /// <summary>
        /// 指定窗口打开副标题超链接，支持'self' | 'blank'，不指定等同为'blank'（新窗口）
        /// </summary>
       [Description("指定窗口打开副标题超链接，支持'self' | 'blank'，不指定等同为'blank'（新窗口）")]
       public string subtarget { get; set; }


       private string _x = "left";
        /// <summary>
        /// 水平安放位置，默认为左侧，可选为：'center' | 'left' | 'right' | {number}（x坐标，单位px）
        /// </summary>
       [Description("水平安放位置，默认为左侧，可选为：'center' | 'left' | 'right' | {number}（x坐标，单位px）")]
       public string x 
       {
           get
           {
               return _x;
           }
           set 
           {
               _x = value;
           } 
       }


       private string _y = "top";
        /// <summary>
        /// 垂直安放位置，默认为全图顶端，可选为：'top' | 'bottom' | 'center' | {number}（y坐标，单位px）
        /// </summary>
       [Description("垂直安放位置，默认为全图顶端，可选为：'top' | 'bottom' | 'center' | {number}（y坐标，单位px）")]
       public string y 
       {
           get
           {
               return _y;
           }
           set
           {
               _y = value;
           }
       }

        /// <summary>
        /// 水平对齐方式，默认根据x设置自动调整，可选为： left' | 'right' | 'center
        /// </summary>
       [Description("水平对齐方式，默认根据x设置自动调整，可选为： left' | 'right' | 'center")]
       public string textAlign { get; set; }


        private Color _backgroundColor = Color.White;
        /// <summary>
        /// 标题背景颜色，默认透明
        /// </summary>
        [TypeConverter(typeof(WebColorConverter))]
        [Description("标题背景颜色，默认透明")]
        [NotifyParentProperty(true)]
        public Color backgroundColor
        {
            get
            {
                return _backgroundColor;
            }
            set
            {
                _backgroundColor = value;
            }
        }


        private Color _borderColor = ColorTranslator.FromHtml("#ccc");
        /// <summary>
        /// 标题边框颜色
        /// </summary>
        [TypeConverter(typeof(WebColorConverter))]
        [Description("标题边框颜色")]
        public Color borderColor 
        {
            get 
            {
                return _borderColor;
            }

            set 
            {
                _borderColor = value;
            }
        }

        /// <summary>
        /// 标题边框线宽，单位px，默认为0（无边框）
        /// </summary>
        [Description("标题边框线宽，单位px，默认为0（无边框）")]
        [NotifyParentProperty(true)]
        public int borderWidth { get; set; }


        private int _papadding = 5;
        /// <summary>
        /// 标题内边距，单位px，默认各方向内边距为5，接受数组分别设定上右下左边距，同css
        /// </summary>
        [Description("标题内边距，单位px，默认各方向内边距为5，接受数组分别设定上右下左边距，同css")]
        public int papadding 
        {
            get 
            {
                return _papadding;
            }
            set 
            {
                _papadding = value; 
            }
        }


        private int _itemGap = 5;
        /// <summary>
        /// 主副标题纵向间隔，单位px，默认为10
        /// </summary>
        [Description("主副标题纵向间隔，单位px，默认为10")]
        public int itemGap 
        {
            get 
            {
                return _itemGap;
            }
            set
            {
                _itemGap = value;
            }
        }


        private FontStyle _textStyle = new FontStyle();
        /// <summary>
        /// 主标题文本样式
        /// </summary>
        [Description("主标题文本样式")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [NotifyParentProperty(true)]
        public FontStyle textStyle
        {
            get
            {
                return _textStyle;
            }
        }


        private FontStyle _subtextStyle = new FontStyle();
        /// <summary>
        /// 副标题文本样式
        /// </summary>
        [Description("副标题文本样式")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        [NotifyParentProperty(true)]
        public FontStyle subtextStyle
        {
            get
            {
                return _subtextStyle;
            }
        }

    }
}
